package com.ruoyi.by.health.mapper;

import com.ruoyi.by.health.domain.entity.ByhealthEmployee;
import com.ruoyi.by.health.domain.entity.ByhealthLotteryOutcome;
import com.ruoyi.by.health.domain.form.EmployeeGameForm;
import com.ruoyi.by.health.domain.vo.EmployeeGameVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 员工表 数据层
 *
 * @author ruoyi
 */
@Mapper
public interface ByhealthEmployeeMapper {
    /**
     * 根据条件分页查询员工列表
     *
     * @param employee 员工信息
     * @return 员工信息集合信息
     */
    public List<ByhealthEmployee> selectEmployeeList(ByhealthEmployee employee);

    public List<ByhealthEmployee> selectEmployeeListNoLottery(ByhealthLotteryOutcome lotteryOutcome);

    public List<ByhealthEmployee> selectRandomEmployeeList(@Param("randomNum") Integer randomNum);


    /**
     * 获取游戏排行榜
     *
     * @param gameForm 排行榜数量
     * @return 员工信息集合信息
     */
    public List<EmployeeGameVo> gameScoreList(EmployeeGameForm gameForm);

    /**
     * 通过员id查询员工
     *
     * @param empId 员工id
     * @return 员工对象信息
     */
    public ByhealthEmployee selectEmployeeByEmpId(@Param("empId") Long empId);

    /**
     * 通过员工名查询员工
     *
     * @param empCode 员工名
     * @return 员工对象信息
     */
    public ByhealthEmployee selectEmployeeByCode(@Param("empCode") String empCode);

    /**
     * 通过员工名查询员工
     *
     * @param openId 员工名
     * @return 员工对象信息
     */
    public ByhealthEmployee selectEmployeeByOpenId(@Param("openId") String openId);

    /**
     * 通过员工名查询员工
     *
     * @param appOpenId 员工名
     * @return 员工对象信息
     */
    public ByhealthEmployee selectEmployeeByAppOpenId(@Param("appOpenId") String appOpenId);

    /**
     * 新增员工信息
     *
     * @param employee 员工信息
     * @return 结果
     */
    public int insertEmployee(ByhealthEmployee employee);

    /**
     * 修改用户信息
     *
     * @param employee 用户信息
     * @return 结果
     */
    public int updateEmployee(ByhealthEmployee employee);

    /**
     * 修改用户 游戏结果
     *
     * @param empId     用户id
     * @param gameScore 用户游戏得分
     * @param gameRank  用户排名
     * @return 结果
     */
    public int updateEmployeeGame(@Param("empId") Long empId, @Param("gameScore") Long gameScore,
                                  @Param("gameRank") Long gameRank);

    /**
     * 根据条员工号和手机号查询员工信息
     *
     * @param empCode 员工信息
     * @param phone   员工信息
     * @return 员工信息集合信息
     */
    public ByhealthEmployee selectByCodeAndPhone(@Param("empCode") String empCode, @Param("phone") String phone);

    /**
     * 修改员工openId 即员工微信注册
     *
     * @param empId  用户信息
     * @param openId 用户信息
     * @return 结果
     */
    public int updateEmployeeOpenId(@Param("empId") Long empId, @Param("openId") String openId,
                                    @Param("appOpenId") String appOpenId);

    /**
     * 获取普通员工数量
     *
     * @return
     */
    public Integer allEmployeeCount();

    /**
     * 获取boss数量
     *
     * @return
     */
    public Integer allBossCount();


}
